{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python 开发工具的选择\n",
    "\n",
    "\n",
    "常见的 Python 开发工具主要有 Anaconda、Visual Studio Cord、PyCharm、Jupyter Notebook 、JupyterLab、 Spyder 以及各种文本编辑器等\n",
    "http://c.biancheng.net/view/7752.html\n",
    "\n",
    "# Jupyter 基本语法\n",
    "\n",
    "## 快捷键\n",
    "- A 当前区域的上面插入一个代码框\n",
    "- B 在当前区域下面插入代码框\n",
    "- H 查看所有的快捷键\n",
    "- L 显示隐藏行标\n",
    "- X 剪切选中的单元\n",
    "- C 复制选中的单元\n",
    "- V 粘贴单元格\n",
    "- Y 切换到代码格式\n",
    "- M 切换到markdowm 模式\n",
    "- DD 删除选中的单元\n",
    "- Tab 补齐代码或者缩进\n",
    "- Ctrl+Enter 运行 光标留在当前\n",
    "- Ctrl+S 保存文件\n",
    "- Ctrl+Z 恢复删除的内容\n",
    "- Shift+Enter 运行 光标进入下个编辑框\n",
    "- Shift+tab 函数提示\n",
    "\n",
    "- Enter 换行\n",
    "## 魔法命令 \n",
    "- Ipython 中的特殊命令，为常见的任务提供便利\n",
    "- %lsmagic 列出所有的魔法命令\n",
    "- %lsmagic\n",
    "- %pwd 显示当前路径\n",
    "- %run 运行文件 %run f:/files.py\n",
    "- %%write 写文件\n",
    "- %load 导入文件\n",
    "\n",
    "\n",
    "# Markdown 语法\n",
    "\n",
    "Markdown 教程 https://www.runoob.com/markdown/md-tutorial.html\n",
    "Markdown是一种轻量级标记语言，创始人为约翰·格鲁伯（英语：John Gruber）。 它允许人们使用易读易写的纯文本格式编写文档，然后转换成有效的XHTML（或者HTML）文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。\n",
    "由于Markdown的轻量化、易读易写特性，并且对于图片，图表、数学式都有支持，目前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。 如GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等，甚至还能被使用来撰写电子书。\n",
    "\n",
    "## 基本命令:\n",
    "### 命令模式和Markdown模式转换 \n",
    "- Markdown 在非编辑区域按 M\n",
    "- 代码模式 在非编辑区域按 Y\n",
    "### 图片和网址链接\n",
    "- 链接网址:\n",
    "[百度](www.sina.com.cn)\n",
    "- Markdown 图片语法\n",
    "![图片](http://pic.netbian.com/uploads/allimg/180826/113958-153525479855be.jpg)\n",
    "\n",
    "### 公式编写\n",
    "- 公式居中 $$y=2+x$$\n",
    "$$\\frac{2} {x+y}$$\n",
    "\n",
    "### 注释 \n",
    "（~下的点）\n",
    "```\n",
    "python\n",
    "if __name __== \"__mian__\"\n",
    "```\n",
    "\n",
    "### Markdown 标题语法\n",
    "- #一级标题\n",
    "- ##二级标题\n",
    "- ###三级标题\n",
    "(#后加空格)\n",
    "### Markdown 强调语法\n",
    "**加粗**\n",
    "*斜体* \n",
    "- 显示圆点\n",
    "### Markdown 引用语法\n",
    "> 显示竖线\n",
    "->> >可以嵌套\n",
    "\n",
    "### Markdown 列表语法\n",
    "- 示例\n",
    "\n",
    "\n",
    "# Jupyter Notebook / Anaconda 安装 升级\n",
    "\n",
    "https://www.anaconda.com/products/individual\n",
    "\n",
    " >conda update conda\n",
    " >conda update anaconda \n",
    " >conda update anaconda-navigator\n",
    " >conda update --all  更新所有的库\n",
    " \n",
    " - Python所有库的升级 \n",
    " - pip 升级\n",
    " >python -m pip install --upgrade pip\n",
    " >pip install --upgrade pip\n",
    " \n",
    "\n",
    "\n",
    "\n",
    "# PyEcharts 库使用基本说明 \n",
    "## pyecharts库 安装\n",
    ">pip install pyecharts\n",
    "## pyEcharts库示例\n",
    "https://gallery.pyecharts.org/#/README\n",
    "    \n",
    "https://gallery.pyecharts.org/#/README\n",
    "\n",
    "地图库安装\n",
    " > pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-countries-pypkg\n",
    " \n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-provinces-pypkg\n",
    "  \n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-cities-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-counties-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-misc-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-united-kingdom-pypkg#如果提示缺少这个就安装一下\n",
    "\n",
    " > pip  install pyecharts_snapshot\n",
    "\n",
    "\n",
    "## 参数设置\n",
    "https://pyecharts.org/#/zh-cn/intro\n",
    "## pyEcharts 示例在jupyter notebook环境中显示的说明：\n",
    "　pyEcharts 示例在jupyter notebook环境中显示的说明：\n",
    " \n",
    "    1.注释掉 c内部的.render()\n",
    "    2.在体外加上\n",
    "        c.render_notebook()\n",
    "        c.render(\"文件名.html\")\n",
    "    3.顺序不能改变\n",
    "\n",
    "    示例：\n",
    "    from pyecharts import options as opts\n",
    "    from pyecharts.charts import Liquid\n",
    "    c = (\n",
    "        Liquid()\n",
    "        .add(\"lq\", [0.6, 0.7])\n",
    "        .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-基本示例\"))\n",
    "        # .render(\"liquid_base.html\")\n",
    "    )\n",
    "    c.render_notebook()\n",
    "    c.render(\"liquid_base.html\")\n",
    "\n",
    "  ## 离线运行。\n",
    "   如果不安装echarts.js文件，离线状态将无法在此环境渲染或者输出到html文件中，且没有任何错误提示。\n",
    "   \n",
    "   要使PyEcharts在离线状态下显示各种图形，需要下载echarts.js文件\n",
    "   \n",
    "   下载地址https://echarts.apache.org/zh/builder.html\n",
    "   \n",
    "   选择所有图形，然后 取消“代码压缩”，之后下载，存放在当前目录下。\n",
    "   js文件大约2.5m\n",
    "   ## python 程序的编译\n",
    "   参见：http://c.biancheng.net/view/2690.html\n",
    "   安装 PyInstalle\n",
    "    Python 默认并不包含 PyInstaller 模块，因此需要自行安装 PyInstaller 模块。\n",
    "   >pip install pyinstaller\n",
    "\n",
    "    安装 PyInstaller 模块与安装其他 Python 模块一样，使用 pip 命令安装即可。在命令行输入如下命令：\n",
    "    pip install pyinstaller\n",
    "    强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块，不要使用离线包的方式来安装，因为 PyInstaller 模块还依赖其他模块，pip 在安装 PyInstaller 模块时会先安装它的依赖模块。\n",
    "    运行上面命令，应该看到如下输出结果：\n",
    "    Successfully installed pyinstaller-x.x.x\n",
    "    其中的 x.x.x 代表 PyInstaller 的版本。\n",
    "    在 PyInstaller 模块安装成功之后，在 Python 的安装目录下的 Scripts(D:\\Python\\Python36\\Scripts) 目录下会增加一个 pyinstaller.exe 程序，接下来就可以使用该工具将 Python 程序生成 EXE 程序了。\n",
    "    PyInstaller生成可执行程序\n",
    "    \n",
    "# 实用的Jupyter Notebook扩展插件\n",
    "## 安装\n",
    "\n",
    ">pip install jupyter_nbextensions_configurator jupyter_contrib_nbextensions\n",
    "\n",
    ">jupyter contrib nbextension install --user\n",
    "\n",
    ">jupyter nbextensions_configurator enable --user\n",
    "## 插件说明\n",
    "nbextensions插件说明\n",
    "\n",
    "- (some) LaTeX environments for Jupyter : 支持更多的Latex元素\n",
    "- 2to3 Converter : 将Python2代码转换为Python3代码的工具\n",
    "- Addbefore : 在当前单元格前加入空单元格的功能\n",
    "- Autopep8 : 代码格式化的工具(需要安装autopep8包)\n",
    "- Autosavetime : 可设置自动保存的时间间隔\n",
    "- Autoscroll : 设置屏幕自动滚动阈值的工具\n",
    "- Cell Filter : 依据标签过滤单元格的工具\n",
    "- Code Font Size : 设置代码字体大小的工具\n",
    "- Code preffify : 代码美化的工具(需要安装yapf包)\n",
    "- Codefolding : 增加折叠代码的功能(包括Python依据缩进折叠、其他代码依据方括号折叠、依据注释折叠)\n",
    "- Codefolding in Editor :\n",
    "- CodeMirror mode extensions :\n",
    "- Collapsible Headings : 存储markdown标题的折叠情况(在下一次打开的时候重新加载这点状态)\n",
    "- Comment/Uncomment Hotkey : # 增加注释/取消注释的热键\n",
    "- contrib_nbextensions_help_item : 添加帮助菜单\n",
    "- datestamper : 将当前日期和时间粘贴到单元格中的工具\n",
    "- Equation Auto Numbering : 公式自动编号工具\n",
    "- ExecuteTime : 记录上一次运行代码单元的时间以及运行花费的时间\n",
    "- Execution Dependencies : 记录单元格之间依赖关系的工具\n",
    "- Exercise : 隐藏/显示单元格的功能(可以与Exercise2同时使用)\n",
    "- Exercise2 : 隐藏/显示单元格的功能(可以与Exercise同时使用)\n",
    "- Export Embedded HTML : 将notebook导出为HTML文件的工具\n",
    "- Freeze : 提供单元格锁定、只读相关功能- \n",
    "- Gist-it : 一键发布Github的gist功能\n",
    "- Help panel : 在工具栏中增加显示帮助说明的按钮\n",
    "- Hide Header : 增加隐藏标题栏、菜单栏和工具栏的功能\n",
    "- Hide input : 在工具栏中增加隐藏指定代码单元的功能\n",
    "- Hide input all : 在工具栏中增加隐藏所有代码单元的功能\n",
    "- Highlight selected word : 高亮显示被选中的对象以及所有代码单元中该对象的所有实例\n",
    "- hightlighter : 在工具栏中增加荧光笔功能，可以高亮显示框选的内容\n",
    "- Hinterland : 自动补全功能\n",
    "- Initialization cells : 在工具栏中增加运行所有被框选为“初始化代码单元”的代码单元\n",
    "- insort formatter : 排序代码单元中导入的包(需要安装isort包)\n",
    "- jupyter-js-widgets/extension :\n",
    "- Keyboard shortcut editor : 创建/修改/删除Jupyter的快捷键\n",
    "- Launch QTConsole : 使用QTConsole内核\n",
    "- Limit Output : 显示代码单元输出的文本或HTML的字符数\n",
    "- Live Markdown Preview :\n",
    "- Load Tex macros :\n",
    "- Move selected cells: 在工具栏中增加上下移动单元格的功能\n",
    "- Navigation-Hotkeys : 增加用于导航的快捷键\n",
    "- Nbextensions dashboard tab :\n",
    "- Nbextensions edit menu item :\n",
    "- nb Translate : 在工具栏中增加语言翻译工具\n",
    "- Notify : 增加在Jupyter内核空闲时的通知提示功能(适合运行很耗时的情况)\n",
    "- Printview : 在工具栏中增加将当前notebook输出为html或pdf的功能\n",
    "- Python Markdown : 允许使用{{x}}的方法来直接输出结果\n",
    "- Rubberband : 允许进行多个单元的选择\n",
    "- Ruler : 增加标尺功能\n",
    "- Ruler in Editor :\n",
    "- Runtools : 在工具栏中增加了更多运行各个单元的方法\n",
    "- Scratchpad : 增加便笺式单元，可以针对当前内核执行代码，而无需修改notebook中的内容\n",
    "- ScrollDown : 自动在选中单元格时向下滚动\n",
    "- Select CodeMirror Keymap : 使用CodeMirror获取键盘映射，可以禁用非Jupyter的其他浏览器快捷键\n",
    "- SKILL Syntax : CodeMirror的Skill模块\n",
    "- Skip-Traceback : 跳过报错的路径追踪，只显示错误名称和类型的摘要\n",
    "- Snippets : 在工具栏中增加添加指定代码单元的功能\n",
    "- Snippets Menu : 在菜单栏中增加可自定义的菜单栏，用以插入代码片段\n",
    "- pellchecker : 拼写检查，高亮显示拼写错误的单词\n",
    "- Split Cells Notebook : 增加拆分单元格的命令\n",
    "- - Table of Contents(2) : 增加浮动目录功能\n",
    "- table_beautifier : 美化输出的单元格\n",
    "- Toggle all line numbers : 在工具栏中增加一个控制所有单元格行号是否显示的工具\n",
    "- Tree Filter : 在Jupyter笔记本文件树页面中增加按文件名过滤的功能\n",
    "- Variable Inspector : 在工具栏中增加变量检查的功能\n",
    "- zenmode : 增加Zenmode功能扩展"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 代码版本控制\n",
    "基本工具：\n",
    "- >git\n",
    "- >GitKraken\n",
    "- >GitHub\n",
    "- >Gitee\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RGB颜色代码值参考\n",
    "\n",
    "https://www.matools.com/color\n",
    "\n",
    "[网页调色板_RGB颜色代码值参考](https://www.matools.com/color)\n",
    "\n",
    "\n",
    "离线网页调色板_RGB颜色代码值参考: file:///C:/Users/Administrator.SKY-20180705TEP/Documents/RGB.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/json": {
       "cell": {
        "!": "OSMagics",
        "HTML": "Other",
        "SVG": "Other",
        "bash": "Other",
        "capture": "ExecutionMagics",
        "cmd": "Other",
        "debug": "ExecutionMagics",
        "file": "Other",
        "html": "DisplayMagics",
        "javascript": "DisplayMagics",
        "js": "DisplayMagics",
        "latex": "DisplayMagics",
        "markdown": "DisplayMagics",
        "perl": "Other",
        "prun": "ExecutionMagics",
        "pypy": "Other",
        "python": "Other",
        "python2": "Other",
        "python3": "Other",
        "ruby": "Other",
        "script": "ScriptMagics",
        "sh": "Other",
        "svg": "DisplayMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "writefile": "OSMagics"
       },
       "line": {
        "alias": "OSMagics",
        "alias_magic": "BasicMagics",
        "autoawait": "AsyncMagics",
        "autocall": "AutoMagics",
        "automagic": "AutoMagics",
        "autosave": "KernelMagics",
        "bookmark": "OSMagics",
        "cd": "OSMagics",
        "clear": "KernelMagics",
        "cls": "KernelMagics",
        "colors": "BasicMagics",
        "conda": "PackagingMagics",
        "config": "ConfigMagics",
        "connect_info": "KernelMagics",
        "copy": "Other",
        "ddir": "Other",
        "debug": "ExecutionMagics",
        "dhist": "OSMagics",
        "dirs": "OSMagics",
        "doctest_mode": "BasicMagics",
        "echo": "Other",
        "ed": "Other",
        "edit": "KernelMagics",
        "env": "OSMagics",
        "gui": "BasicMagics",
        "hist": "Other",
        "history": "HistoryMagics",
        "killbgscripts": "ScriptMagics",
        "ldir": "Other",
        "less": "KernelMagics",
        "load": "CodeMagics",
        "load_ext": "ExtensionMagics",
        "loadpy": "CodeMagics",
        "logoff": "LoggingMagics",
        "logon": "LoggingMagics",
        "logstart": "LoggingMagics",
        "logstate": "LoggingMagics",
        "logstop": "LoggingMagics",
        "ls": "Other",
        "lsmagic": "BasicMagics",
        "macro": "ExecutionMagics",
        "magic": "BasicMagics",
        "matplotlib": "PylabMagics",
        "mkdir": "Other",
        "more": "KernelMagics",
        "notebook": "BasicMagics",
        "page": "BasicMagics",
        "pastebin": "CodeMagics",
        "pdb": "ExecutionMagics",
        "pdef": "NamespaceMagics",
        "pdoc": "NamespaceMagics",
        "pfile": "NamespaceMagics",
        "pinfo": "NamespaceMagics",
        "pinfo2": "NamespaceMagics",
        "pip": "PackagingMagics",
        "popd": "OSMagics",
        "pprint": "BasicMagics",
        "precision": "BasicMagics",
        "prun": "ExecutionMagics",
        "psearch": "NamespaceMagics",
        "psource": "NamespaceMagics",
        "pushd": "OSMagics",
        "pwd": "OSMagics",
        "pycat": "OSMagics",
        "pylab": "PylabMagics",
        "qtconsole": "KernelMagics",
        "quickref": "BasicMagics",
        "recall": "HistoryMagics",
        "rehashx": "OSMagics",
        "reload_ext": "ExtensionMagics",
        "ren": "Other",
        "rep": "Other",
        "rerun": "HistoryMagics",
        "reset": "NamespaceMagics",
        "reset_selective": "NamespaceMagics",
        "rmdir": "Other",
        "run": "ExecutionMagics",
        "save": "CodeMagics",
        "sc": "OSMagics",
        "set_env": "OSMagics",
        "store": "StoreMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "tb": "ExecutionMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "unalias": "OSMagics",
        "unload_ext": "ExtensionMagics",
        "who": "NamespaceMagics",
        "who_ls": "NamespaceMagics",
        "whos": "NamespaceMagics",
        "xdel": "NamespaceMagics",
        "xmode": "BasicMagics"
       }
      },
      "text/plain": [
       "Available line magics:\n",
       "%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cd  %clear  %cls  %colors  %conda  %config  %connect_info  %copy  %ddir  %debug  %dhist  %dirs  %doctest_mode  %echo  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %macro  %magic  %matplotlib  %mkdir  %more  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %ren  %rep  %rerun  %reset  %reset_selective  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode\n",
       "\n",
       "Available cell magics:\n",
       "%%!  %%HTML  %%SVG  %%bash  %%capture  %%cmd  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile\n",
       "\n",
       "Automagic is ON, % prefix IS NOT needed for line magics."
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%lsmagic \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  柱状图：\n",
    "## 带最大值和最小值标注\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:312: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"4df51be261ba46b4a40baa1ea5d62915\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_4df51be261ba46b4a40baa1ea5d62915 = echarts.init(\n",
       "                    document.getElementById('4df51be261ba46b4a40baa1ea5d62915'), 'dark', {renderer: 'canvas'});\n",
       "                var option_4df51be261ba46b4a40baa1ea5d62915 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                915.3,\n",
       "                613.9,\n",
       "                1054.7,\n",
       "                974.0,\n",
       "                629.3,\n",
       "                904.1,\n",
       "                970.3,\n",
       "                559.3,\n",
       "                920.2,\n",
       "                813.6,\n",
       "                564.1,\n",
       "                685.7,\n",
       "                738.9,\n",
       "                895.3,\n",
       "                445.0,\n",
       "                712.5,\n",
       "                529.6,\n",
       "                583.8,\n",
       "                799.7,\n",
       "                797.8,\n",
       "                742.6,\n",
       "                586.1,\n",
       "                875.5,\n",
       "                805.3,\n",
       "                759.7,\n",
       "                653.9,\n",
       "                653.9,\n",
       "                578.2,\n",
       "                652.5,\n",
       "                618.3,\n",
       "                583.0,\n",
       "                552.0,\n",
       "                763.9,\n",
       "                718.1,\n",
       "                810.8,\n",
       "                969.5,\n",
       "                724.9,\n",
       "                629.7,\n",
       "                467.4,\n",
       "                642.4,\n",
       "                748.9,\n",
       "                554.0,\n",
       "                633.7,\n",
       "                893.1,\n",
       "                880.7,\n",
       "                721.9,\n",
       "                571.8,\n",
       "                857.6,\n",
       "                561.2,\n",
       "                501.5,\n",
       "                583.8,\n",
       "                739.2,\n",
       "                652.4,\n",
       "                705.2,\n",
       "                822.2,\n",
       "                576.3,\n",
       "                672.3,\n",
       "                718.7,\n",
       "                657.7,\n",
       "                1036.6,\n",
       "                477.9,\n",
       "                786.0,\n",
       "                788.0,\n",
       "                362.9,\n",
       "                573.4,\n",
       "                968.0,\n",
       "                464.4,\n",
       "                482.6,\n",
       "                873.8,\n",
       "                \"\\u4e1c\\u9675\"\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                \"\",\n",
       "                \"\",\n",
       "                \"\",\n",
       "                \"\",\n",
       "                617.2,\n",
       "                657.4,\n",
       "                695.1,\n",
       "                456.0,\n",
       "                762.5,\n",
       "                825.3,\n",
       "                507.2,\n",
       "                496.2,\n",
       "                500.2,\n",
       "                810.0,\n",
       "                510.3,\n",
       "                527.6,\n",
       "                380.2,\n",
       "                497.1,\n",
       "                659.6,\n",
       "                627.0,\n",
       "                632.9,\n",
       "                486.0,\n",
       "                626.9,\n",
       "                716.9,\n",
       "                720.0,\n",
       "                605.7,\n",
       "                709.9,\n",
       "                544.4,\n",
       "                817.8,\n",
       "                401.9,\n",
       "                445.7,\n",
       "                362.9,\n",
       "                543.4,\n",
       "                667.3,\n",
       "                693.3,\n",
       "                811.3,\n",
       "                604.9,\n",
       "                536.2,\n",
       "                378.4,\n",
       "                634.3,\n",
       "                854.7,\n",
       "                403.3,\n",
       "                476.7,\n",
       "                1012.8,\n",
       "                690.2,\n",
       "                499.3,\n",
       "                673.0,\n",
       "                817.5,\n",
       "                489.7,\n",
       "                417.7,\n",
       "                351.6,\n",
       "                357.0,\n",
       "                537.6,\n",
       "                511.6,\n",
       "                616.7,\n",
       "                319.1,\n",
       "                408.3,\n",
       "                594.5,\n",
       "                613.0,\n",
       "                1042.3,\n",
       "                588.4,\n",
       "                854.7,\n",
       "                653.8,\n",
       "                380.6,\n",
       "                445.2,\n",
       "                782.4,\n",
       "                566.8,\n",
       "                296.2,\n",
       "                731.5,\n",
       "                \"\\u65b0\\u6c11\"\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\",\n",
       "                \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\": true,\n",
       "                \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1951\\u5e74\",\n",
       "                \"1952\\u5e74\",\n",
       "                \"1953\\u5e74\",\n",
       "                \"1954\\u5e74\",\n",
       "                \"1955\\u5e74\",\n",
       "                \"1956\\u5e74\",\n",
       "                \"1957\\u5e74\",\n",
       "                \"1958\\u5e74\",\n",
       "                \"1959\\u5e74\",\n",
       "                \"1960\\u5e74\",\n",
       "                \"1961\\u5e74\",\n",
       "                \"1962\\u5e74\",\n",
       "                \"1963\\u5e74\",\n",
       "                \"1964\\u5e74\",\n",
       "                \"1965\\u5e74\",\n",
       "                \"1966\\u5e74\",\n",
       "                \"1967\\u5e74\",\n",
       "                \"1968\\u5e74\",\n",
       "                \"1969\\u5e74\",\n",
       "                \"1970\\u5e74\",\n",
       "                \"1971\\u5e74\",\n",
       "                \"1972\\u5e74\",\n",
       "                \"1973\\u5e74\",\n",
       "                \"1974\\u5e74\",\n",
       "                \"1975\\u5e74\",\n",
       "                \"1976\\u5e74\",\n",
       "                \"1977\\u5e74\",\n",
       "                \"1978\\u5e74\",\n",
       "                \"1979\\u5e74\",\n",
       "                \"1980\\u5e74\",\n",
       "                \"1981\\u5e74\",\n",
       "                \"1982\\u5e74\",\n",
       "                \"1983\\u5e74\",\n",
       "                \"1984\\u5e74\",\n",
       "                \"1985\\u5e74\",\n",
       "                \"1986\\u5e74\",\n",
       "                \"1987\\u5e74\",\n",
       "                \"1988\\u5e74\",\n",
       "                \"1989\\u5e74\",\n",
       "                \"1990\\u5e74\",\n",
       "                \"1991\\u5e74\",\n",
       "                \"1992\\u5e74\",\n",
       "                \"1993\\u5e74\",\n",
       "                \"1994\\u5e74\",\n",
       "                \"1995\\u5e74\",\n",
       "                \"1996\\u5e74\",\n",
       "                \"1997\\u5e74\",\n",
       "                \"1998\\u5e74\",\n",
       "                \"1999\\u5e74\",\n",
       "                \"2000\\u5e74\",\n",
       "                \"2001\\u5e74\",\n",
       "                \"2002\\u5e74\",\n",
       "                \"2003\\u5e74\",\n",
       "                \"2004\\u5e74\",\n",
       "                \"2005\\u5e74\",\n",
       "                \"2006\\u5e74\",\n",
       "                \"2007\\u5e74\",\n",
       "                \"2008\\u5e74\",\n",
       "                \"2009\\u5e74\",\n",
       "                \"2010\\u5e74\",\n",
       "                \"2011\\u5e74\",\n",
       "                \"2012\\u5e74\",\n",
       "                \"2013\\u5e74\",\n",
       "                \"2014\\u5e74\",\n",
       "                \"2015\\u5e74\",\n",
       "                \"2016\\u5e74\",\n",
       "                \"2017\\u5e74\",\n",
       "                \"2018\\u5e74\",\n",
       "                \"2019\\u5e74\",\n",
       "                \"\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5e74\\u964d\\u96e8\\u91cf\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"mm\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_4df51be261ba46b4a40baa1ea5d62915.setOption(option_4df51be261ba46b4a40baa1ea5d62915);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x5e94488>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 示例1 一组数据\n",
    "\n",
    "\n",
    "import xlrd\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.faker import Faker\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "bar = Bar()\n",
    "\"\"\"\n",
    "x=[\"浑南\", \"沈北\", \"苏家屯\", \"辽中\", \"新民\",\"康平\", \"法库\"]\n",
    "y1=[5, 12, 18, 7, 15, 7, 9,10]\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"10月21日降雨量\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"#106473\"))\n",
    "\"\"\"\n",
    "\n",
    "# execl文件读取方法\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "book = xlrd.open_workbook(filename)\n",
    "sheet1 = book.sheets()[0]\n",
    "nrows = sheet1.nrows\n",
    "# print('表格总行数',nrows)\n",
    "ncols = sheet1.ncols\n",
    "# print('表格总列数',ncols)\n",
    "\n",
    "row1_values = sheet1.row_values(0)\n",
    "\n",
    "#print('第1行值',row1_values)\n",
    "col1_values = sheet1.col_values(colx=0,start_rowx=1)\n",
    "#print('第1列值',col1_values)\n",
    "x=col1_values\n",
    "col2_values = sheet1.col_values(colx=1,start_rowx=1)\n",
    "col3_values = sheet1.col_values(colx=2,start_rowx=1)\n",
    "#print('第2列值',col2_values)\n",
    "\n",
    "y1=col2_values\n",
    "y2=col3_values \n",
    "\n",
    "'''\n",
    "#逐项例举法\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"年降雨量\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"#106473\"))\n",
    "'''\n",
    "\n",
    "# 链式写法\n",
    "bar = (\n",
    "    Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))  # LIGHT\n",
    "     .add_xaxis(x)\n",
    "     .add_yaxis(\"浑南降雨量\", y1)\n",
    "     .add_yaxis(\"新民降雨量\", y2)\n",
    "    #下行的设置 与+6的设置方法相同，增加了更详细的参数\n",
    "     .set_global_opts(title_opts=opts.TitleOpts(title=\"降雨量\", subtitle=\"mm\"))   \n",
    "    \n",
    ")\n",
    "\n",
    "# 标注标题、放大滑块\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"年降雨量\", subtitle=\"mm\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                              pos_left = 'center'),                                         \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"),)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 标注最大值和最小值\n",
    "bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False),markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  \n",
    "                  ]))\n",
    "\n",
    "# render 会生成本地 HTML 文件，默认会在当前目录生成 render.html 文件\n",
    "# 也可以传入路径参数，如 bar.render(\"mycharts.html\")\n",
    "bar.render(\"bar.html\")\n",
    "bar.render_notebook()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"27b470223ef34c5298411f4adbec9d91\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_27b470223ef34c5298411f4adbec9d91 = echarts.init(\n",
       "                    document.getElementById('27b470223ef34c5298411f4adbec9d91'), 'light', {renderer: 'canvas'});\n",
       "                var option_27b470223ef34c5298411f4adbec9d91 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                5,\n",
       "                12,\n",
       "                18,\n",
       "                7,\n",
       "                15,\n",
       "                7,\n",
       "                9\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                15,\n",
       "                6,\n",
       "                45,\n",
       "                20,\n",
       "                35,\n",
       "                66,\n",
       "                34\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "                \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\": true,\n",
       "                \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u6d51\\u5357\",\n",
       "                \"\\u6c88\\u5317\",\n",
       "                \"\\u82cf\\u5bb6\\u5c6f\",\n",
       "                \"\\u8fbd\\u4e2d\",\n",
       "                \"\\u5eb7\\u5e73\",\n",
       "                \"\\u6cd5\\u5e93\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u964d\\u96e8\\u91cf\",\n",
       "            \"subtext\": \"mm\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_27b470223ef34c5298411f4adbec9d91.setOption(option_27b470223ef34c5298411f4adbec9d91);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6131788>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 两组数据\n",
    "\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "# 内置主题类型可查看 pyecharts.globals.ThemeType\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "bar = (\n",
    "    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))\n",
    "     .add_xaxis([\"浑南\", \"沈北\", \"苏家屯\", \"辽中\", \"康平\", \"法库\"])\n",
    "     .add_yaxis(\"10月21日降雨量\", [5, 12, 18, 7, 15, 7, 9])\n",
    "    .add_yaxis(\"8月16日降雨量\", [15, 6, 45, 20, 35, 66,34])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"降雨量\", subtitle=\"mm\"))\n",
    ")\n",
    "bar.render(\"bar2.html\")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 柱状图3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"3ea0139d851d49b5b8790efd57dc527a\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_3ea0139d851d49b5b8790efd57dc527a = echarts.init(\n",
       "                    document.getElementById('3ea0139d851d49b5b8790efd57dc527a'), 'white', {renderer: 'canvas'});\n",
       "                var option_3ea0139d851d49b5b8790efd57dc527a = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                114,\n",
       "                55,\n",
       "                27,\n",
       "                101,\n",
       "                125,\n",
       "                27,\n",
       "                105\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                57,\n",
       "                134,\n",
       "                137,\n",
       "                129,\n",
       "                145,\n",
       "                60,\n",
       "                49\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u886c\\u886b\",\n",
       "                \"\\u6bdb\\u8863\",\n",
       "                \"\\u9886\\u5e26\",\n",
       "                \"\\u88e4\\u5b50\",\n",
       "                \"\\u98ce\\u8863\",\n",
       "                \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                \"\\u889c\\u5b50\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u67d0\\u5546\\u573a\\u9500\\u552e\\u60c5\\u51b5\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_3ea0139d851d49b5b8790efd57dc527a.setOption(option_3ea0139d851d49b5b8790efd57dc527a);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d20948>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "\n",
    "# V1 版本开始支持链式调用\n",
    "bar = (\n",
    "    Bar()\n",
    "    .add_xaxis([\"衬衫\", \"毛衣\", \"领带\", \"裤子\", \"风衣\", \"高跟鞋\", \"袜子\"])\n",
    "    .add_yaxis(\"商家A\", [114, 55, 27, 101, 125, 27, 105])\n",
    "    .add_yaxis(\"商家B\", [57, 134, 137, 129, 145, 60, 49])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"某商场销售情况\"))\n",
    ")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "code_folding": []
   },
   "source": [
    "## 带标志线的 柱状图Bar - Bar_markline_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"c9600293c5e148508650e1254d7dc23d\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_c9600293c5e148508650e1254d7dc23d = echarts.init(\n",
       "                    document.getElementById('c9600293c5e148508650e1254d7dc23d'), 'white', {renderer: 'canvas'});\n",
       "                var option_c9600293c5e148508650e1254d7dc23d = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                114,\n",
       "                55,\n",
       "                27,\n",
       "                101,\n",
       "                125,\n",
       "                27,\n",
       "                105\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                57,\n",
       "                134,\n",
       "                137,\n",
       "                129,\n",
       "                145,\n",
       "                60,\n",
       "                49\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u886c\\u886b\",\n",
       "                \"\\u6bdb\\u8863\",\n",
       "                \"\\u9886\\u5e26\",\n",
       "                \"\\u88e4\\u5b50\",\n",
       "                \"\\u98ce\\u8863\",\n",
       "                \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                \"\\u889c\\u5b50\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u67d0\\u5546\\u573a\\u9500\\u552e\\u60c5\\u51b5\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_c9600293c5e148508650e1254d7dc23d.setOption(option_c9600293c5e148508650e1254d7dc23d);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d2ca88>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Bar()\n",
    "    .add_xaxis(Faker.choose())\n",
    "    .add_yaxis(\"商家A\", Faker.values())\n",
    "    .add_yaxis(\"商家B\", Faker.values())\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Bar-MarkLine（指定类型）\"))\n",
    "    .set_series_opts(\n",
    "        label_opts=opts.LabelOpts(is_show=False),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[\n",
    "                opts.MarkLineItem(type_=\"min\", name=\"最小值\"),\n",
    "                opts.MarkLineItem(type_=\"max\", name=\"最大值\"),\n",
    "                opts.MarkLineItem(type_=\"average\", name=\"平均值\"),\n",
    "            ]\n",
    "        ),\n",
    "    )\n",
    "   \n",
    "    .render(\"Bar - Bar_markline_type.html\")\n",
    ")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 水球图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\Administrator.SKY-20180705TEP\\\\liquid_base.html'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Liquid\n",
    "\n",
    "c = (\n",
    "    Liquid()\n",
    "    .add(\"lq\", [0.6, 0.7])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-基本示例\"))\n",
    "    # .render(\"liquid_base.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()\n",
    "c.render(\"liquid_base.html\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'echarts-liquidfill':'https://assets.pyecharts.org/assets/echarts-liquidfill.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"bceda639f47c4485859fd3ba0614ace7\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'echarts-liquidfill'], function(echarts) {\n",
       "                var chart_bceda639f47c4485859fd3ba0614ace7 = echarts.init(\n",
       "                    document.getElementById('bceda639f47c4485859fd3ba0614ace7'), 'white', {renderer: 'canvas'});\n",
       "                var option_bceda639f47c4485859fd3ba0614ace7 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"liquidFill\",\n",
       "            \"name\": \"lq\",\n",
       "            \"data\": [\n",
       "                0.3,\n",
       "                0.7\n",
       "            ],\n",
       "            \"waveAnimation\": true,\n",
       "            \"animationDuration\": 2000,\n",
       "            \"animationDurationUpdate\": 1000,\n",
       "            \"color\": [\n",
       "                \"#294D99\",\n",
       "                \"#156ACF\",\n",
       "                \"#1598ED\",\n",
       "                \"#45BDFF\"\n",
       "            ],\n",
       "            \"shape\": \"diamond\",\n",
       "            \"backgroundStyle\": {},\n",
       "            \"outline\": {\n",
       "                \"show\": false,\n",
       "                \"borderDistance\": 8\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"inside\",\n",
       "                \"margin\": 8,\n",
       "                \"fontSize\": 50\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Liquid-Shape-Diamond\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_bceda639f47c4485859fd3ba0614ace7.setOption(option_bceda639f47c4485859fd3ba0614ace7);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d29ec8>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Liquid\n",
    "from pyecharts.globals import SymbolType\n",
    "\n",
    "c = (\n",
    "    Liquid()\n",
    "    .add(\"lq\", [0.3, 0.7], is_outline_show=False, shape=SymbolType.DIAMOND)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-Shape-Diamond\"))\n",
    "    #.render(\"liquid_shape_diamond.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 地理坐标 Geo\n",
    "## Geo - Geo_chart_countries_js"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', '瑞士':'https://assets.pyecharts.org/assets/maps/Switzerland'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"048342b8aee648abbadf4ec610f691a8\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', '瑞士'], function(echarts) {\n",
       "                var chart_048342b8aee648abbadf4ec610f691a8 = echarts.init(\n",
       "                    document.getElementById('048342b8aee648abbadf4ec610f691a8'), 'white', {renderer: 'canvas'});\n",
       "                var option_048342b8aee648abbadf4ec610f691a8 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u745e\\u58eb\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"geo\": {\n",
       "        \"map\": \"\\u745e\\u58eb\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_048342b8aee648abbadf4ec610f691a8.setOption(option_048342b8aee648abbadf4ec610f691a8);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6119a88>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.datasets import register_url\n",
    "\n",
    "try:\n",
    "    register_url(\"https://echarts-maps.github.io/echarts-countries-js/\")\n",
    "except Exception:\n",
    "    import ssl\n",
    "\n",
    "    ssl._create_default_https_context = ssl._create_unverified_context\n",
    "    register_url(\"https://echarts-maps.github.io/echarts-countries-js/\")\n",
    "\"\"\" 原示例\n",
    "geo = (\n",
    "    Geo()\n",
    "    .add_schema(maptype=\"瑞士\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"中国\"))\n",
    "    .render(\"geo_chart_countries_js.html\")\n",
    "    )\n",
    "\"\"\"\n",
    "# 改变写法后可在notebook 环境显示。\n",
    "\n",
    "geo = Geo()\n",
    "geo .add_schema(maptype=\"瑞士\")\n",
    "geo.set_global_opts(title_opts=opts.TitleOpts(title=\"瑞士\"))\n",
    "#geo.render(\"geo_chart_countries_js.html\")\n",
    "geo.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Geo - Geo_lines_background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\Administrator.SKY-20180705TEP\\\\geo_lines_background.html'"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.globals import ChartType, SymbolType\n",
    "\n",
    "c = (\n",
    "    Geo()\n",
    "    .add_schema(\n",
    "        maptype=\"china\",\n",
    "        itemstyle_opts=opts.ItemStyleOpts(color=\"#323c48\", border_color=\"#111\"),\n",
    "    )\n",
    "    .add(\n",
    "        \"\",\n",
    "        [(\"广州\", 55), (\"北京\", 66), (\"杭州\", 77), (\"重庆\", 88)],\n",
    "        type_=ChartType.EFFECT_SCATTER,\n",
    "        color=\"white\",\n",
    "    )\n",
    "    .add(\n",
    "        \"geo\",\n",
    "        [(\"广州\", \"上海\"), (\"广州\", \"北京\"), (\"广州\", \"杭州\"), (\"广州\", \"重庆\")],\n",
    "        type_=ChartType.LINES,\n",
    "        effect_opts=opts.EffectOpts(\n",
    "            symbol=SymbolType.ARROW, symbol_size=6, color=\"blue\"\n",
    "        ),\n",
    "        linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Geo-Lines-background\"))\n",
    "    #.render(\"geo_lines_background.html\")\n",
    ")\n",
    "c.render_notebook()\n",
    "c.render(\"geo_lines_background.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"cb07d6c1dac440579868437c6516c304\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_cb07d6c1dac440579868437c6516c304 = echarts.init(\n",
       "                    document.getElementById('cb07d6c1dac440579868437c6516c304'), 'white', {renderer: 'canvas'});\n",
       "                var option_cb07d6c1dac440579868437c6516c304 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"map\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"mapType\": \"china\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": 74\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": 68\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": 89\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": 150\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": 115\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": 84\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": 102\n",
       "                }\n",
       "            ],\n",
       "            \"roam\": true,\n",
       "            \"zoom\": 1,\n",
       "            \"showLegendSymbol\": true,\n",
       "            \"emphasis\": {}\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Map-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_cb07d6c1dac440579868437c6516c304.setOption(option_cb07d6c1dac440579868437c6516c304);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x610da88>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Map\n",
    "from pyecharts.faker import Faker\n",
    "c = (\n",
    "    Map()\n",
    "    .add(\"商家A\", [list(z) for z in zip(Faker.provinces, Faker.values())], \"china\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Map-基本示例\"))\n",
    "    \n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 热力图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"cc57e5c1a72344fc86eae355f72047dd\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_cc57e5c1a72344fc86eae355f72047dd = echarts.init(\n",
       "                    document.getElementById('cc57e5c1a72344fc86eae355f72047dd'), 'white', {renderer: 'canvas'});\n",
       "                var option_cc57e5c1a72344fc86eae355f72047dd = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"heatmap\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": [\n",
       "                        113.26653,\n",
       "                        23.132191,\n",
       "                        22\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        134\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        70\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": [\n",
       "                        115.909228,\n",
       "                        28.675696,\n",
       "                        136\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": [\n",
       "                        112.98381,\n",
       "                        28.112444,\n",
       "                        108\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": [\n",
       "                        120.152791,\n",
       "                        30.267446,\n",
       "                        21\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": [\n",
       "                        118.763232,\n",
       "                        32.061707,\n",
       "                        98\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"pointSize\": 20,\n",
       "            \"blurSize\": 20,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-\\u70ed\\u529b\\u5730\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_cc57e5c1a72344fc86eae355f72047dd.setOption(option_cc57e5c1a72344fc86eae355f72047dd);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6125d88>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.faker import Faker\n",
    "from pyecharts.globals import ChartType\n",
    "c = (\n",
    "    Geo()\n",
    "    .add_schema(maptype=\"china\")\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip(Faker.provinces, Faker.values())],\n",
    "        type_=ChartType.HEATMAP,\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "    .set_global_opts(\n",
    "        visualmap_opts=opts.VisualMapOpts(),\n",
    "        title_opts=opts.TitleOpts(title=\"Geo-热力地图\"),\n",
    "    )\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"51d7eca738c14f1ba2b962d9ce4f0420\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_51d7eca738c14f1ba2b962d9ce4f0420 = echarts.init(\n",
       "                    document.getElementById('51d7eca738c14f1ba2b962d9ce4f0420'), 'white', {renderer: 'canvas'});\n",
       "                var option_51d7eca738c14f1ba2b962d9ce4f0420 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"map\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"mapType\": \"china\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": 107\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": 44\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": 126\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": 40\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": 30\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": 80\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": 35\n",
       "                }\n",
       "            ],\n",
       "            \"roam\": true,\n",
       "            \"zoom\": 1,\n",
       "            \"showLegendSymbol\": true,\n",
       "            \"emphasis\": {}\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Map-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_51d7eca738c14f1ba2b962d9ce4f0420.setOption(option_51d7eca738c14f1ba2b962d9ce4f0420);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d2d1c8>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Map\n",
    "from pyecharts.faker import Faker\n",
    "c = (\n",
    "    Map()\n",
    "    .add(\"商家A\", [list(z) for z in zip(Faker.provinces, Faker.values())], \"china\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Map-基本示例\"))\n",
    "    \n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"baf8b69f9e79411cad7b1086a2b9912d\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_baf8b69f9e79411cad7b1086a2b9912d = echarts.init(\n",
       "                    document.getElementById('baf8b69f9e79411cad7b1086a2b9912d'), 'white', {renderer: 'canvas'});\n",
       "                var option_baf8b69f9e79411cad7b1086a2b9912d = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"blue\",\n",
       "        \"green\",\n",
       "        \"yellow\",\n",
       "        \"red\",\n",
       "        \"pink\",\n",
       "        \"orange\",\n",
       "        \"purple\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"clockwise\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u886c\\u886b\",\n",
       "                    \"value\": 107\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6bdb\\u8863\",\n",
       "                    \"value\": 98\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u9886\\u5e26\",\n",
       "                    \"value\": 81\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u88e4\\u5b50\",\n",
       "                    \"value\": 66\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u98ce\\u8863\",\n",
       "                    \"value\": 82\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                    \"value\": 79\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u889c\\u5b50\",\n",
       "                    \"value\": 60\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}: {c}\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u886c\\u886b\",\n",
       "                \"\\u6bdb\\u8863\",\n",
       "                \"\\u9886\\u5e26\",\n",
       "                \"\\u88e4\\u5b50\",\n",
       "                \"\\u98ce\\u8863\",\n",
       "                \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                \"\\u889c\\u5b50\"\n",
       "            ],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Pie-\\u8bbe\\u7f6e\\u989c\\u8272\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_baf8b69f9e79411cad7b1086a2b9912d.setOption(option_baf8b69f9e79411cad7b1086a2b9912d);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6111cc8>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Pie\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Pie()\n",
    "    .add(\"\", [list(z) for z in zip(Faker.choose(), Faker.values())])\n",
    "    .set_colors([\"blue\", \"green\", \"yellow\", \"red\", \"pink\", \"orange\", \"purple\"])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Pie-设置颜色\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    "    #.render(\"pie_set_color.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"25ca31794e624dbdab4556ec4c5dd6bc\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_25ca31794e624dbdab4556ec4c5dd6bc = echarts.init(\n",
       "                    document.getElementById('25ca31794e624dbdab4556ec4c5dd6bc'), 'white', {renderer: 'canvas'});\n",
       "                var option_25ca31794e624dbdab4556ec4c5dd6bc = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"clockwise\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u6cb3\\u9a6c\",\n",
       "                    \"value\": 110\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u87d2\\u86c7\",\n",
       "                    \"value\": 149\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8001\\u864e\",\n",
       "                    \"value\": 119\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5927\\u8c61\",\n",
       "                    \"value\": 58\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5154\\u5b50\",\n",
       "                    \"value\": 34\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u718a\\u732b\",\n",
       "                    \"value\": 101\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u72ee\\u5b50\",\n",
       "                    \"value\": 84\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}: {c}\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6cb3\\u9a6c\",\n",
       "                \"\\u87d2\\u86c7\",\n",
       "                \"\\u8001\\u864e\",\n",
       "                \"\\u5927\\u8c61\",\n",
       "                \"\\u5154\\u5b50\",\n",
       "                \"\\u718a\\u732b\",\n",
       "                \"\\u72ee\\u5b50\"\n",
       "            ],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Pie-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_25ca31794e624dbdab4556ec4c5dd6bc.setOption(option_25ca31794e624dbdab4556ec4c5dd6bc);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4c2f408>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Pie\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Pie()\n",
    "    .add(\"\", [list(z) for z in zip(Faker.choose(), Faker.values())])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Pie-基本示例\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    "    #.render(\"pie_base.html\")\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 折线图\n",
    "## 基本折线图\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"10104fb01f2c4b58bf5da1f294e67738\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_10104fb01f2c4b58bf5da1f294e67738 = echarts.init(\n",
       "                    document.getElementById('10104fb01f2c4b58bf5da1f294e67738'), 'white', {renderer: 'canvas'});\n",
       "                var option_10104fb01f2c4b58bf5da1f294e67738 = {\n",
       "    \"backgroundColor\": \"#B0C4DE\",\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u8bbf\\u95ee\\u91cf\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbol\": \"circle\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"1\\u65e5\",\n",
       "                    509\n",
       "                ],\n",
       "                [\n",
       "                    \"2\\u65e5\",\n",
       "                    917\n",
       "                ],\n",
       "                [\n",
       "                    \"3\\u65e5\",\n",
       "                    2455\n",
       "                ],\n",
       "                [\n",
       "                    \"4\\u65e5\",\n",
       "                    2610\n",
       "                ],\n",
       "                [\n",
       "                    \"5\\u65e5\",\n",
       "                    2719\n",
       "                ],\n",
       "                [\n",
       "                    \"6\\u65e5\",\n",
       "                    3033\n",
       "                ],\n",
       "                [\n",
       "                    \"7\\u65e5\",\n",
       "                    3044\n",
       "                ],\n",
       "                [\n",
       "                    \"8\\u65e5\",\n",
       "                    3085\n",
       "                ],\n",
       "                [\n",
       "                    \"9\\u65e5\",\n",
       "                    2708\n",
       "                ],\n",
       "                [\n",
       "                    \"10\\u65e5\",\n",
       "                    2809\n",
       "                ],\n",
       "                [\n",
       "                    \"11\\u65e5\",\n",
       "                    2117\n",
       "                ],\n",
       "                [\n",
       "                    \"12\\u65e5\",\n",
       "                    2000\n",
       "                ],\n",
       "                [\n",
       "                    \"13\\u65e5\",\n",
       "                    1455\n",
       "                ],\n",
       "                [\n",
       "                    \"14\\u65e5\",\n",
       "                    1210\n",
       "                ],\n",
       "                [\n",
       "                    \"15\\u65e5\",\n",
       "                    719\n",
       "                ],\n",
       "                [\n",
       "                    \"16\\u65e5\",\n",
       "                    733\n",
       "                ],\n",
       "                [\n",
       "                    \"17\\u65e5\",\n",
       "                    944\n",
       "                ],\n",
       "                [\n",
       "                    \"18\\u65e5\",\n",
       "                    2285\n",
       "                ],\n",
       "                [\n",
       "                    \"19\\u65e5\",\n",
       "                    2208\n",
       "                ],\n",
       "                [\n",
       "                    \"20\\u65e5\",\n",
       "                    3372\n",
       "                ],\n",
       "                [\n",
       "                    \"21\\u65e5\",\n",
       "                    3936\n",
       "                ],\n",
       "                [\n",
       "                    \"22\\u65e5\",\n",
       "                    3693\n",
       "                ],\n",
       "                [\n",
       "                    \"23\\u65e5\",\n",
       "                    2962\n",
       "                ],\n",
       "                [\n",
       "                    \"24\\u65e5\",\n",
       "                    2810\n",
       "                ],\n",
       "                [\n",
       "                    \"25\\u65e5\",\n",
       "                    3519\n",
       "                ],\n",
       "                [\n",
       "                    \"26\\u65e5\",\n",
       "                    2455\n",
       "                ],\n",
       "                [\n",
       "                    \"27\\u65e5\",\n",
       "                    2610\n",
       "                ],\n",
       "                [\n",
       "                    \"28\\u65e5\",\n",
       "                    2719\n",
       "                ],\n",
       "                [\n",
       "                    \"29\\u65e5\",\n",
       "                    2484\n",
       "                ],\n",
       "                [\n",
       "                    \"30\\u65e5\",\n",
       "                    2078\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"itemStyle\": {\n",
       "                \"color\": \"#9400D3\"\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u8bbf\\u95ee\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u8bbf\\u95ee\\u91cf\": true\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1\\u65e5\",\n",
       "                \"2\\u65e5\",\n",
       "                \"3\\u65e5\",\n",
       "                \"4\\u65e5\",\n",
       "                \"5\\u65e5\",\n",
       "                \"6\\u65e5\",\n",
       "                \"7\\u65e5\",\n",
       "                \"8\\u65e5\",\n",
       "                \"9\\u65e5\",\n",
       "                \"10\\u65e5\",\n",
       "                \"11\\u65e5\",\n",
       "                \"12\\u65e5\",\n",
       "                \"13\\u65e5\",\n",
       "                \"14\\u65e5\",\n",
       "                \"15\\u65e5\",\n",
       "                \"16\\u65e5\",\n",
       "                \"17\\u65e5\",\n",
       "                \"18\\u65e5\",\n",
       "                \"19\\u65e5\",\n",
       "                \"20\\u65e5\",\n",
       "                \"21\\u65e5\",\n",
       "                \"22\\u65e5\",\n",
       "                \"23\\u65e5\",\n",
       "                \"24\\u65e5\",\n",
       "                \"25\\u65e5\",\n",
       "                \"26\\u65e5\",\n",
       "                \"27\\u65e5\",\n",
       "                \"28\\u65e5\",\n",
       "                \"29\\u65e5\",\n",
       "                \"30\\u65e5\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_10104fb01f2c4b58bf5da1f294e67738.setOption(option_10104fb01f2c4b58bf5da1f294e67738);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x63ff208>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# https://mp.weixin.qq.com/s?__biz=MzUzMjczMDQ5OA==&mid=2247486609&idx=1&sn=492a2b74a13e3ffb5cd3468887783238&chksm=faaf8b7ccdd8026a552451d1211ff7e69fbeada72674bf34352b705241aec942ab5c23a6ff72&mpshare=1&scene=1&srcid=0927ztAbRCmmmIs55mHKv6po&sharer_sharetime=1601208124939&sharer_shareid=02c00284fab3e4c5e9417de504f50157&exportkey=AVVuiOoqOtx58mfOmISH79I%3D&pass_ticket=ugsx3w5e71JNOtD31yYDO9BQrtn8vwipRBcmYX9PrU8LE1Hk45vyONB5JBgT2OR2&wx_header=0#rd\n",
    "\n",
    "from pyecharts.charts import Bar\n",
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "## Step1，导入pyecharts相关模块：\n",
    "#bar = Bar()\n",
    "\n",
    "x_data = [str(i)+'日' for i in range(1,31)]\n",
    "y_data = [509, 917, 2455, 2610, 2719, 3033, 3044, 3085, 2708, 2809, 2117,2000,1455,1210,719,\\\n",
    "        733,944,2285,2208,3372,3936,3693,2962,2810,3519,2455,2610,2719,2484,2078]\n",
    "y2_data = [\n",
    "            2136,3693,2962,3810,3519,3484,3915,3823,3455,4310,4019,3433,3544,3885,4208,3372,\\\n",
    "            3484,3915,3748,3675,4009,4433,3544,3285,4208,3372,3484,3915,3823,4265,4298]\n",
    "\n",
    "## Step2，造数  30 对(x,y)，数据比较简单\n",
    "\n",
    "c=(\n",
    "        Line(opts.InitOpts( bg_color = \"#B0C4DE\",   ))\n",
    "        \n",
    "    #  Step3，图形初始化配置\n",
    "    #  第一个问题：下面代码开始的一对括号作用是？有它我们可以随意换行，看起来更爽\n",
    "    #  第二个问题：InitOpts 是什么对象？ 这是options模块中的一个图形初始化相关的配置对象。\n",
    "\n",
    "\n",
    "\n",
    "        .add_xaxis(xaxis_data=x_data)     #Step4，添加 x 轴的数据\n",
    "        .add_yaxis(\n",
    "            y_axis=y_data,\n",
    "            series_name=\"访问量\",\n",
    "            symbol=\"circle\",\n",
    "            symbol_size = 10,\n",
    "            is_symbol_show=True,\n",
    "            label_opts=opts.LabelOpts(is_show=True),\n",
    "            itemstyle_opts=opts.ItemStyleOpts(\n",
    "                color = \"#9400D3\"  #\"#6f7de3\"   色系表 https://tool.oschina.net/commons?type=3\n",
    "            )\n",
    "        ) #y 轴的数据赋值给y_axis，同时做一些 y 轴属性配置\n",
    "        #.render(\"basic_line_chart.html\")\n",
    "\n",
    "\n",
    ")\n",
    "c.render_notebook()\n",
    "#c.render(\"basic_line_chart.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"c64019f57bb049f890ab6069e93ed275\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_c64019f57bb049f890ab6069e93ed275 = echarts.init(\n",
       "                    document.getElementById('c64019f57bb049f890ab6069e93ed275'), 'white', {renderer: 'canvas'});\n",
       "                var option_c64019f57bb049f890ab6069e93ed275 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"1\",\n",
       "                    5\n",
       "                ],\n",
       "                [\n",
       "                    \"2\",\n",
       "                    6\n",
       "                ],\n",
       "                [\n",
       "                    \"3\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"4\",\n",
       "                    32\n",
       "                ],\n",
       "                [\n",
       "                    \"5\",\n",
       "                    54\n",
       "                ],\n",
       "                [\n",
       "                    \"6\",\n",
       "                    71\n",
       "                ],\n",
       "                [\n",
       "                    \"7\",\n",
       "                    163\n",
       "                ],\n",
       "                [\n",
       "                    \"8\",\n",
       "                    200\n",
       "                ],\n",
       "                [\n",
       "                    \"9\",\n",
       "                    145\n",
       "                ],\n",
       "                [\n",
       "                    \"10\",\n",
       "                    76\n",
       "                ],\n",
       "                [\n",
       "                    \"11\",\n",
       "                    32\n",
       "                ],\n",
       "                [\n",
       "                    \"12\",\n",
       "                    12\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": false,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"type\": \"category\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1\",\n",
       "                \"2\",\n",
       "                \"3\",\n",
       "                \"4\",\n",
       "                \"5\",\n",
       "                \"6\",\n",
       "                \"7\",\n",
       "                \"8\",\n",
       "                \"9\",\n",
       "                \"10\",\n",
       "                \"11\",\n",
       "                \"12\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"type\": \"value\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"axisTick\": {\n",
       "                \"show\": true,\n",
       "                \"alignWithLabel\": false,\n",
       "                \"inside\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_c64019f57bb049f890ab6069e93ed275.setOption(option_c64019f57bb049f890ab6069e93ed275);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d1ce88>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "\n",
    "\n",
    "x_data = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n",
    "y_data = [820, 932, 901, 934, 1290, 1330, 1320]\n",
    "\n",
    "x_data = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"]\n",
    "y_data = [5, 6, 13, 32, 54, 71, 163,200,145,76,32,12,9]\n",
    "c=(\n",
    "    Line()\n",
    "    .set_global_opts(\n",
    "        tooltip_opts=opts.TooltipOpts(is_show=False),\n",
    "        xaxis_opts=opts.AxisOpts(type_=\"category\"),\n",
    "        yaxis_opts=opts.AxisOpts(\n",
    "            type_=\"value\",\n",
    "            axistick_opts=opts.AxisTickOpts(is_show=True),\n",
    "            splitline_opts=opts.SplitLineOpts(is_show=True),\n",
    "        ),\n",
    "    )\n",
    "    .add_xaxis(xaxis_data=x_data)\n",
    "    .add_yaxis(\n",
    "        series_name=\"逐月降雨量\",\n",
    "        y_axis=y_data,\n",
    "        symbol=\"emptyCircle\",\n",
    "        is_symbol_show=True,\n",
    "        label_opts=opts.LabelOpts(is_show=True),# 是否显示折线图上的数字。\n",
    "        \n",
    "    )\n",
    "    #.render(\"basic_line_chart.html\")\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 双折线\n",
    "Line - Temperature_change_line_chart"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"d617da3fb74a43f285f992f5f486c530\" style=\"width:1000px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_d617da3fb74a43f285f992f5f486c530 = echarts.init(\n",
       "                    document.getElementById('d617da3fb74a43f285f992f5f486c530'), 'white', {renderer: 'canvas'});\n",
       "                var option_d617da3fb74a43f285f992f5f486c530 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u6700\\u9ad8\\u6c14\\u6e29\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5468\\u4e00\",\n",
       "                    11\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e8c\",\n",
       "                    11\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e09\",\n",
       "                    15\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u56db\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e94\",\n",
       "                    12\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u516d\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u65e5\",\n",
       "                    10\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"silent\": false,\n",
       "                \"precision\": 2,\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5e73\\u5747\\u503c\",\n",
       "                        \"type\": \"average\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u6700\\u4f4e\\u6c14\\u6e29\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5468\\u4e00\",\n",
       "                    1\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e8c\",\n",
       "                    -2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e09\",\n",
       "                    2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u56db\",\n",
       "                    5\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e94\",\n",
       "                    3\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u516d\",\n",
       "                    2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u65e5\",\n",
       "                    0\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5468\\u6700\\u4f4e\",\n",
       "                        \"x\": 1,\n",
       "                        \"y\": -1.5,\n",
       "                        \"value\": -2\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"silent\": false,\n",
       "                \"precision\": 2,\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5e73\\u5747\\u503c\",\n",
       "                        \"type\": \"average\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"xAxis\": \"90%\",\n",
       "                        \"yAxis\": \"max\",\n",
       "                        \"symbol\": \"none\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u9ad8\\u70b9\",\n",
       "                        \"type\": \"max\",\n",
       "                        \"symbol\": \"circle\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6700\\u9ad8\\u6c14\\u6e29\",\n",
       "                \"\\u6700\\u4f4e\\u6c14\\u6e29\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u6700\\u9ad8\\u6c14\\u6e29\": true,\n",
       "                \"\\u6700\\u4f4e\\u6c14\\u6e29\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"axis\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"type\": \"category\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"boundaryGap\": false,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u5468\\u4e00\",\n",
       "                \"\\u5468\\u4e8c\",\n",
       "                \"\\u5468\\u4e09\",\n",
       "                \"\\u5468\\u56db\",\n",
       "                \"\\u5468\\u4e94\",\n",
       "                \"\\u5468\\u516d\",\n",
       "                \"\\u5468\\u65e5\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u672a\\u6765\\u4e00\\u5468\\u6c14\\u6e29\\u53d8\\u5316\",\n",
       "            \"subtext\": \"\\u7eaf\\u5c5e\\u865a\\u6784\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"itemSize\": 15,\n",
       "        \"itemGap\": 10,\n",
       "        \"left\": \"80%\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"type\": \"png\",\n",
       "                \"backgroundColor\": \"auto\",\n",
       "                \"connectedBackgroundColor\": \"#fff\",\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4fdd\\u5b58\\u4e3a\\u56fe\\u7247\",\n",
       "                \"pixelRatio\": 1\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u8fd8\\u539f\"\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u6570\\u636e\\u89c6\\u56fe\",\n",
       "                \"readOnly\": false,\n",
       "                \"lang\": [\n",
       "                    \"\\u6570\\u636e\\u89c6\\u56fe\",\n",
       "                    \"\\u5173\\u95ed\",\n",
       "                    \"\\u5237\\u65b0\"\n",
       "                ],\n",
       "                \"backgroundColor\": \"#fff\",\n",
       "                \"textareaColor\": \"#fff\",\n",
       "                \"textareaBorderColor\": \"#333\",\n",
       "                \"textColor\": \"#000\",\n",
       "                \"buttonColor\": \"#c23531\",\n",
       "                \"buttonTextColor\": \"#fff\"\n",
       "            },\n",
       "            \"dataZoom\": {\n",
       "                \"show\": true,\n",
       "                \"title\": {\n",
       "                    \"zoom\": \"\\u533a\\u57df\\u7f29\\u653e\",\n",
       "                    \"back\": \"\\u533a\\u57df\\u7f29\\u653e\\u8fd8\\u539f\"\n",
       "                },\n",
       "                \"icon\": {},\n",
       "                \"xAxisIndex\": false,\n",
       "                \"yAxisIndex\": false,\n",
       "                \"filterMode\": \"filter\"\n",
       "            },\n",
       "            \"magicType\": {\n",
       "                \"show\": true,\n",
       "                \"type\": [\n",
       "                    \"line\",\n",
       "                    \"bar\",\n",
       "                    \"stack\",\n",
       "                    \"tiled\"\n",
       "                ],\n",
       "                \"title\": {\n",
       "                    \"line\": \"\\u5207\\u6362\\u4e3a\\u6298\\u7ebf\\u56fe\",\n",
       "                    \"bar\": \"\\u5207\\u6362\\u4e3a\\u67f1\\u72b6\\u56fe\",\n",
       "                    \"stack\": \"\\u5207\\u6362\\u4e3a\\u5806\\u53e0\",\n",
       "                    \"tiled\": \"\\u5207\\u6362\\u4e3a\\u5e73\\u94fa\"\n",
       "                },\n",
       "                \"icon\": {}\n",
       "            },\n",
       "            \"brush\": {\n",
       "                \"icon\": {},\n",
       "                \"title\": {\n",
       "                    \"rect\": \"\\u77e9\\u5f62\\u9009\\u62e9\",\n",
       "                    \"polygon\": \"\\u5708\\u9009\",\n",
       "                    \"lineX\": \"\\u6a2a\\u5411\\u9009\\u62e9\",\n",
       "                    \"lineY\": \"\\u7eb5\\u5411\\u9009\\u62e9\",\n",
       "                    \"keep\": \"\\u4fdd\\u6301\\u9009\\u62e9\",\n",
       "                    \"clear\": \"\\u6e05\\u9664\\u9009\\u62e9\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "                chart_d617da3fb74a43f285f992f5f486c530.setOption(option_d617da3fb74a43f285f992f5f486c530);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d39248>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "\n",
    "\"\"\"\n",
    "Gallery 使用 pyecharts 1.1.0\n",
    "参考地址: https://www.echartsjs.com/examples/editor.html?c=line-marker\n",
    "\n",
    "目前无法实现的功能:\n",
    "\n",
    "1、最低气温的最高值暂时无法和 Echarts 的示例完全复刻\n",
    "\"\"\"\n",
    "\n",
    "week_name_list = [\"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"]\n",
    "high_temperature = [11, 11, 15, 13, 12, 13, 10]\n",
    "low_temperature = [1, -2, 2, 5, 3, 2, 0]\n",
    "\n",
    "\n",
    "c=(\n",
    "    Line(init_opts=opts.InitOpts(width=\"1000px\", height=\"500px\"))\n",
    "    .add_xaxis(xaxis_data=week_name_list)\n",
    "    .add_yaxis(\n",
    "        series_name=\"最高气温\",\n",
    "        y_axis=high_temperature,\n",
    "        markpoint_opts=opts.MarkPointOpts(\n",
    "            data=[\n",
    "                opts.MarkPointItem(type_=\"max\", name=\"最大值\"),\n",
    "                opts.MarkPointItem(type_=\"min\", name=\"最小值\"),\n",
    "            ]\n",
    "        ),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[opts.MarkLineItem(type_=\"average\", name=\"平均值\")]\n",
    "        ),\n",
    "    )\n",
    "    .add_yaxis(\n",
    "        series_name=\"最低气温\",\n",
    "        y_axis=low_temperature,\n",
    "        markpoint_opts=opts.MarkPointOpts(\n",
    "            data=[opts.MarkPointItem(value=-2, name=\"周最低\", x=1, y=-1.5)]\n",
    "        ),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[\n",
    "                opts.MarkLineItem(type_=\"average\", name=\"平均值\"),\n",
    "                opts.MarkLineItem(symbol=\"none\", x=\"90%\", y=\"max\"),\n",
    "                opts.MarkLineItem(symbol=\"circle\", type_=\"max\", name=\"最高点\"),\n",
    "            ]\n",
    "        ),\n",
    "    )\n",
    "    .set_global_opts(\n",
    "        title_opts=opts.TitleOpts(title=\"未来一周气温变化\", subtitle=\"纯属虚构\"),\n",
    "        tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n",
    "        toolbox_opts=opts.ToolboxOpts(is_show=True),\n",
    "        xaxis_opts=opts.AxisOpts(type_=\"category\", boundary_gap=False),\n",
    "    )\n",
    "    #.render(\"temperature_change_line_chart.html\")\n",
    ")\n",
    "\n",
    "\n",
    "c.render(\"temperature_change_line_chart.html\")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 航线图 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"c8852d08a20d40c0a08396d0eaacb62e\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_c8852d08a20d40c0a08396d0eaacb62e = echarts.init(\n",
       "                    document.getElementById('c8852d08a20d40c0a08396d0eaacb62e'), 'white', {renderer: 'canvas'});\n",
       "                var option_c8852d08a20d40c0a08396d0eaacb62e = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"effectScatter\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"showEffectOn\": \"render\",\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            },\n",
       "            \"symbolSize\": 12,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        10\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        20\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u5dde\",\n",
       "                    \"value\": [\n",
       "                        113.23,\n",
       "                        23.16,\n",
       "                        30\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6210\\u90fd\",\n",
       "                    \"value\": [\n",
       "                        104.06,\n",
       "                        30.67,\n",
       "                        40\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u54c8\\u5c14\\u6ee8\",\n",
       "                    \"value\": [\n",
       "                        126.63,\n",
       "                        45.75,\n",
       "                        50\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"lines\",\n",
       "            \"name\": \"geo-lines\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"zlevel\": 3,\n",
       "            \"progressive\": 400,\n",
       "            \"progressiveThreshold\": 3000,\n",
       "            \"effect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4,\n",
       "                \"color\": \"yellow\",\n",
       "                \"symbol\": \"arrow\",\n",
       "                \"symbolSize\": 5\n",
       "            },\n",
       "            \"symbol\": [\n",
       "                \"none\",\n",
       "                \"arrow\"\n",
       "            ],\n",
       "            \"polyline\": false,\n",
       "            \"large\": true,\n",
       "            \"largeThreshold\": 2000,\n",
       "            \"symbolSize\": 12,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u5e7f\\u5dde\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            113.23,\n",
       "                            23.16\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u65b0\\u7586\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            87.627704,\n",
       "                            43.793026\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u54c8\\u5c14\\u6ee8\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            126.63,\n",
       "                            45.75\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6210\\u90fd->\\u5317\\u4eac\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            104.06,\n",
       "                            30.67\n",
       "                        ],\n",
       "                        [\n",
       "                            116.407526,\n",
       "                            39.90403\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u54c8\\u5c14\\u6ee8->\\u5e7f\\u5dde\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            126.63,\n",
       "                            45.75\n",
       "                        ],\n",
       "                        [\n",
       "                            113.23,\n",
       "                            23.16\n",
       "                        ]\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0.2,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\",\n",
       "                \"geo-lines\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true,\n",
       "                \"geo-lines\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-Lines\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_c8852d08a20d40c0a08396d0eaacb62e.setOption(option_c8852d08a20d40c0a08396d0eaacb62e);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d1cf08>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入Geo包，注意1.x版本的导入跟0.x版本的导入差别\n",
    "from pyecharts.charts import Geo\n",
    "# 导入配置项\n",
    "from pyecharts import options as opts\n",
    "# ChartType：图标类型，SymbolType：标记点类型\n",
    "from pyecharts .globals import ChartType, SymbolType\n",
    "\n",
    "geo = Geo()\n",
    "\n",
    "# 地图类型，世界地图可换为world\n",
    "geo.add_schema(maptype=\"china\")\n",
    "# 添加数据点\n",
    "geo.add(\"\",[(\"北京\",10),(\"上海\",20),(\"广州\",30),(\"成都\",40),(\"哈尔滨\",50)],type_=ChartType.EFFECT_SCATTER)\n",
    "# 添加流向，type_设置为LINES，涟漪配置为箭头，提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', \n",
    "#'diamond', 'pin', 'arrow', 'none'\n",
    "geo.add(\"geo-lines\",\n",
    "[(\"上海\",\"广州\"),\n",
    "(\"上海\",\"新疆\"),\n",
    "(\"上海\",\"哈尔滨\"),\n",
    "(\"成都\",\"北京\"),\n",
    "(\"哈尔滨\",\"广州\")],\n",
    "type_=ChartType.LINES,\n",
    "effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW,symbol_size=5,color=\"yellow\"),\n",
    "linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    is_large=True)\n",
    "# 不显示标签\n",
    "geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "# 设置图标标题，visualmap_opts=opts.VisualMapOpts()为左下角的视觉映射配置项\n",
    "geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title=\"Geo-Lines\"))\n",
    "# 直接在notebook里显示图表\n",
    "geo.render_notebook()\n",
    "# 生成html文件，可传入位置参数\n",
    "geo.render(\"mychart.html\")\n",
    "geo.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 全局配置\n",
    "## 实例1\n",
    "\n",
    "参考：https://pyecharts.org/#/zh-cn/global_options\n",
    "https://www.cnblogs.com/bltstop/p/13608541.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"fad4b7695a914cf69a9fd574555e0311\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_fad4b7695a914cf69a9fd574555e0311 = echarts.init(\n",
       "                    document.getElementById('fad4b7695a914cf69a9fd574555e0311'), 'white', {renderer: 'canvas'});\n",
       "                var option_fad4b7695a914cf69a9fd574555e0311 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_fad4b7695a914cf69a9fd574555e0311.setOption(option_fad4b7695a914cf69a9fd574555e0311);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6109e48>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "#bar.reversal_axis()  #横向\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "\n",
    "\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 系列配置项\n",
    "### set_series_opts 在柱状图最大值和最小值上方标出数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"a9f0d3507c224f06b42a2a62eebcef77\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_a9f0d3507c224f06b42a2a62eebcef77 = echarts.init(\n",
       "                    document.getElementById('a9f0d3507c224f06b42a2a62eebcef77'), 'white', {renderer: 'canvas'});\n",
       "                var option_a9f0d3507c224f06b42a2a62eebcef77 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_a9f0d3507c224f06b42a2a62eebcef77.setOption(option_a9f0d3507c224f06b42a2a62eebcef77);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d24408>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render(\"bar_colorset.html\")\n",
    "bar.render_notebook()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 改变柱状图的颜色  \n",
    "itemstyle_opts = opts.ItemStyleOpts(color = \"blue\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"45f8f43d732b4bb7a016d52b29cc599c\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_45f8f43d732b4bb7a016d52b29cc599c = echarts.init(\n",
       "                    document.getElementById('45f8f43d732b4bb7a016d52b29cc599c'), 'white', {renderer: 'canvas'});\n",
       "                var option_45f8f43d732b4bb7a016d52b29cc599c = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"itemStyle\": {\n",
       "                \"color\": \"blue\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"itemStyle\": {},\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_45f8f43d732b4bb7a016d52b29cc599c.setOption(option_45f8f43d732b4bb7a016d52b29cc599c);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4d27588>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"blue\"))\n",
    "bar.add_yaxis(\"商家B\", y2,itemstyle_opts = opts.ItemStyleOpts(color = \"\"))\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\") )\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render(\"bar_colorset.html\")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 主题（全局，InitOpts）\n",
    "pyecharts内置提供了10+种不同的风格，另外也提供了便捷的定制主题的方法\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'walden':'https://assets.pyecharts.org/assets/themes/walden'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"13eaedf811e84c08badda69da2f47a98\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'walden'], function(echarts) {\n",
       "                var chart_13eaedf811e84c08badda69da2f47a98 = echarts.init(\n",
       "                    document.getElementById('13eaedf811e84c08badda69da2f47a98'), 'walden', {renderer: 'canvas'});\n",
       "                var option_13eaedf811e84c08badda69da2f47a98 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_13eaedf811e84c08badda69da2f47a98.setOption(option_13eaedf811e84c08badda69da2f47a98);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x611f6c8>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "#bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.DARK))\n",
    "bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.WALDEN))\n",
    "# bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.MACARONS))\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# Data for plotting\n",
    "t = np.arange(0.0, 2.0, 0.01)\n",
    "s = 1 + np.sin(2 * np.pi * t)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(t, s)\n",
    "\n",
    "ax.set(xlabel='time (s)', ylabel='voltage (mV)',\n",
    "       title='About as simple as it gets, folks')\n",
    "ax.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(19680801)\n",
    "\n",
    "# example data\n",
    "mu = 100  # mean of distribution\n",
    "sigma = 15  # standard deviation of distribution\n",
    "x = mu + sigma * np.random.randn(437)\n",
    "\n",
    "num_bins = 50\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "# the histogram of the data\n",
    "n, bins, patches = ax.hist(x, num_bins, density=1)\n",
    "\n",
    "# add a 'best fit' line\n",
    "y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *\n",
    "     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))\n",
    "ax.plot(bins, y, '--')\n",
    "ax.set_xlabel('Smarts')\n",
    "ax.set_ylabel('Probability density')\n",
    "ax.set_title(r'Histogram: $\\mu=100$, $\\sigma=15$')\n",
    "\n",
    "# Tweak spacing to prevent clipping of ylabel\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    },
    {
     "ename": "NameError",
     "evalue": "name 'heatmap' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-24-883d2989f256>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m im, cbar = heatmap(coef, leadtime, param, ax=ax,\n\u001b[0m\u001b[0;32m     21\u001b[0m                    cmap=\"PiYG\", cbarlabel=\"Correlation Coefficient\")\n\u001b[0;32m     22\u001b[0m \u001b[0mtexts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mannotate_heatmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalfmt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"{x:.2f}\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'heatmap' is not defined"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "# sphinx_gallery_thumbnail_number = 2\n",
    "\n",
    "leadtime = [\"lead 1 mon\", \"lead 2 mon\", \"lead 3 mon\", \"lead 4 mon\",\n",
    "              \"lead 5 mon\", \"lead 6 mon\"]\n",
    "param = [\"Temperature\", \"Wind\", \"Precipitation\",\n",
    "           \"SLP\", \"Humidity\", \"Heat flux\"]\n",
    "\n",
    "coef = np.array([[0.95, 0.9, 0.85, 0.8, 0.82, 0.7],\n",
    "                    [0.93, 0.86, 0.82, 0.78, 0.8, 0.65],\n",
    "                    [0.88, 0.82, 0.8, 0.72, 0.75, 0.62],\n",
    "                    [0.85, 0.78, 0.75, 0.68, 0.7, 0.56],\n",
    "                    [0.8, 0.72, 0.7, 0.65, 0.68, 0.5],\n",
    "                    [0.78, 0.68, 0.65, 0.6, 0.6, 0.45],])\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "im, cbar = heatmap(coef, leadtime, param, ax=ax,\n",
    "                   cmap=\"PiYG\", cbarlabel=\"Correlation Coefficient\")\n",
    "texts = annotate_heatmap(im, valfmt=\"{x:.2f}\")\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.tri as tri\n",
    "import numpy as np\n",
    "\n",
    "np.random.seed(19680801)\n",
    "npts = 200\n",
    "ngridx = 100\n",
    "ngridy = 200\n",
    "x = np.random.uniform(-2, 2, npts)\n",
    "y = np.random.uniform(-2, 2, npts)\n",
    "z = x * np.exp(-x**2 - y**2)\n",
    "\n",
    "fig, ax1 = plt.subplots()\n",
    "# -----------------------\n",
    "# Interpolation on a grid\n",
    "# -----------------------\n",
    "# A contour plot of irregularly spaced data coordinates\n",
    "# via interpolation on a grid.\n",
    "# Create grid values first.\n",
    "xi = np.linspace(-2.1, 2.1, ngridx)\n",
    "yi = np.linspace(-2.1, 2.1, ngridy)\n",
    "\n",
    "# Linearly interpolate the data (x, y) \n",
    "# on a grid defined by (xi, yi).\n",
    "triang = tri.Triangulation(x, y)\n",
    "interpolator = tri.LinearTriInterpolator(triang, z)\n",
    "Xi, Yi = np.meshgrid(xi, yi)\n",
    "zi = interpolator(Xi, Yi)\n",
    "\n",
    "# Note that scipy.interpolate provides means to \n",
    "#interpolate data on a grid as well. The following \n",
    "# would be an alternative to the four lines above:\n",
    "#from scipy.interpolate import griddata\n",
    "ax1.contour(xi, yi, zi, levels=14, linewidths=0.5, colors='k')\n",
    "cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap=\"RdBu_r\")\n",
    "fig.colorbar(cntr1, ax=ax1)\n",
    "ax1.plot(x, y, 'ko', ms=3)\n",
    "ax1.set(xlim=(-2, 2), ylim=(-2, 2))\n",
    "ax1.set_title('grid and contour (%d points, %d grid points)'%\n",
    "              (npts, ngridx * ngridy))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(-5, 5, 5)\n",
    "X, Y = np.meshgrid(x, x)\n",
    "U, V = 12 * X, 12 * Y\n",
    "\n",
    "data = [(-1.5, .5, -6, -6),\n",
    "        (1, -1, -46, 46),\n",
    "        (-3, -1, 11, -11),\n",
    "        (1, 1.5, 80, 80),\n",
    "        (0.5, 0.25, 25, 15),\n",
    "        (-1.5, -0.5, -5, 40)]\n",
    "\n",
    "data = np.array(data, dtype=[('x', np.float32), ('y', np.float32),\n",
    "                             ('u', np.float32), ('v', np.float32)])\n",
    "\n",
    "fig1, axs1 = plt.subplots(nrows=2, ncols=2)\n",
    "# Default parameters, uniform grid\n",
    "axs1[0, 0].barbs(X, Y, U, V)\n",
    "\n",
    "# Arbitrary set of vectors, make them longer and change the pivot point\n",
    "# (point around which they're rotated) to be the middle\n",
    "axs1[0, 1].barbs(\n",
    "    data['x'], data['y'], data['u'], data['v'], length=8, pivot='middle')\n",
    "\n",
    "# Showing colormapping with uniform grid.  Fill the circle for an empty barb,\n",
    "# don't round the values, and change some of the size parameters\n",
    "axs1[1, 0].barbs(\n",
    "    X, Y, U, V, np.sqrt(U ** 2 + V ** 2), fill_empty=True, rounding=False,\n",
    "    sizes=dict(emptybarb=0.25, spacing=0.2, height=0.3))\n",
    "\n",
    "# Change colors as well as the increments for parts of the barbs\n",
    "axs1[1, 1].barbs(data['x'], data['y'], data['u'], data['v'], flagcolor='r',\n",
    "                 barbcolor=['b', 'g'], flip_barb=True,\n",
    "                 barb_increments=dict(half=10, full=20, flag=100))\n",
    "\n",
    "# Masked arrays are also supported\n",
    "masked_u = np.ma.masked_array(data['u'])\n",
    "masked_u[4] = 1000  # Bad value that should not be plotted when masked\n",
    "masked_u[4] = np.ma.masked\n",
    "\n",
    "# Identical plot to panel 2 in the first figure, but with the point at\n",
    "# (0.5, 0.25) missing (masked)\n",
    "fig2, ax2 = plt.subplots()\n",
    "ax2.barbs(data['x'], data['y'], masked_u, data['v'], length=8, pivot='middle')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import cm\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "X = np.arange(30*np.pi/180, 89*np.pi/180, np.pi/180)\n",
    "Y = np.arange(0, 360*np.pi/180, np.pi/180)\n",
    "X, Y = np.meshgrid(X, Y)\n",
    "Z = np.sin(Y)/np.tan(X)\n",
    "\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = Axes3D(fig)\n",
    "ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='summer')\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_zlabel('z')\n",
    "ax.set_zlim(-1.5,1.5)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "dt = 0.01\n",
    "t = np.arange(0, 30, dt)\n",
    "nse1 = np.random.randn(len(t))                 # white noise 1\n",
    "nse2 = np.random.randn(len(t))                 # white noise 2\n",
    "\n",
    "# Two signals with a coherent part at 10Hz and a random part\n",
    "s1 = np.sin(2 * np.pi * 10 * t) + nse1\n",
    "s2 = np.sin(2 * np.pi * 10 * t) + nse2\n",
    "\n",
    "fig, axs = plt.subplots(2, 1)\n",
    "axs[0].plot(t, s1, t, s2)\n",
    "axs[0].set_xlim(0, 2)\n",
    "axs[0].set_xlabel('time')\n",
    "axs[0].set_ylabel('s1 and s2')\n",
    "axs[0].grid(True)\n",
    "\n",
    "cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)\n",
    "axs[1].set_ylabel('coherence')\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate(numRows):\n",
    "    r = [[1]]\n",
    "    for i in range(1,numRows):\n",
    "        r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0])))\n",
    "    return r[:numRows]\n",
    "a=generate(10)\n",
    "for i in a:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b4f949ba0c15404380ef96f2e48f4633\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_b4f949ba0c15404380ef96f2e48f4633 = echarts.init(\n",
       "                    document.getElementById('b4f949ba0c15404380ef96f2e48f4633'), 'white', {renderer: 'canvas'});\n",
       "                var option_b4f949ba0c15404380ef96f2e48f4633 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"heatmap\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": [\n",
       "                        113.26653,\n",
       "                        23.132191,\n",
       "                        32\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        65\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        136\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": [\n",
       "                        115.909228,\n",
       "                        28.675696,\n",
       "                        30\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": [\n",
       "                        112.98381,\n",
       "                        28.112444,\n",
       "                        56\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": [\n",
       "                        120.152791,\n",
       "                        30.267446,\n",
       "                        45\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": [\n",
       "                        118.763232,\n",
       "                        32.061707,\n",
       "                        94\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"pointSize\": 20,\n",
       "            \"blurSize\": 20,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-\\u70ed\\u529b\\u5730\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_b4f949ba0c15404380ef96f2e48f4633.setOption(option_b4f949ba0c15404380ef96f2e48f4633);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x2197faa4908>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"08160c282e644ffdb798481a12bef1d4\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_08160c282e644ffdb798481a12bef1d4 = echarts.init(\n",
       "                    document.getElementById('08160c282e644ffdb798481a12bef1d4'), 'white', {renderer: 'canvas'});\n",
       "                var option_08160c282e644ffdb798481a12bef1d4 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"map\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"mapType\": \"china\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": 39\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": 65\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": 120\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": 100\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": 26\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": 111\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": 109\n",
       "                }\n",
       "            ],\n",
       "            \"roam\": true,\n",
       "            \"zoom\": 1,\n",
       "            \"showLegendSymbol\": true,\n",
       "            \"emphasis\": {}\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Map-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_08160c282e644ffdb798481a12bef1d4.setOption(option_08160c282e644ffdb798481a12bef1d4);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x21900df4ac8>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-58-f40686370cd5>, line 8)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-58-f40686370cd5>\"\u001b[1;36m, line \u001b[1;32m8\u001b[0m\n\u001b[1;33m    )\u001b[0m\n\u001b[1;37m     ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "def add_coordinate(\n",
    "  # 坐标地点名称\n",
    "  name: str,\n",
    "  # 经度\n",
    "  longitude: Numeric,\n",
    "  # 纬度\n",
    "  latitude: Numeric,\n",
    ")\n",
    "\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts .globals import ChartType, SymbolType, GeoType\n",
    "\n",
    "geo = Geo()\n",
    "\n",
    "# 新增坐标点，添加名称跟经纬度\n",
    "geo.add_coordinate(name=\"China\",longitude=104.195,latitude=35.675)\n",
    "geo.add_coordinate(name=\"Australia\",longitude=133.775,latitude=-25.274)\n",
    "geo.add_coordinate(name=\"Brazil\",longitude=-51.925,latitude=-14.235)\n",
    "geo.add_coordinate(name=\"South Africa\",longitude=22.937,latitude=-30.559)\n",
    "geo.add_coordinate(name=\"India\",longitude=78.962,latitude=20.593)\n",
    "geo.add_coordinate(name=\"Peru\",longitude=-75.015,latitude=-9.189)\n",
    "geo.add_coordinate(name=\"Iran\",longitude=53.688,latitude=32.427)\n",
    "geo.add_coordinate(name=\"Ukraine\",longitude=31.165,latitude=48.379)\n",
    "geo.add_coordinate(name=\"Canada\",longitude=-106.346,latitude=56.130)\n",
    "geo.add_coordinate(name=\"Mongolia\",longitude=103.847,latitude=46.862)\n",
    "geo.add_coordinate(name=\"Russia\",longitude=37.618,latitude=55.751)\n",
    "geo.add_coordinate(name=\"Mauritania\",longitude=21.008,latitude=-10.941)\n",
    "geo.add_coordinate(name=\"Kazakhstan\",longitude=66.924,latitude=48.019)\n",
    "geo.add_coordinate(name=\"UAE\",longitude=53.848,latitude=23.424)\n",
    "geo.add_coordinate(name=\"Malaysia\",longitude=101.976,latitude=4.210)\n",
    "geo.add_coordinate(name=\"New Zealand\",longitude=174.886,latitude=-40.900)\n",
    "geo.add_coordinate(name=\"Indonesia\",longitude=113.921,latitude=-0.789)\n",
    "geo.add_coordinate(name=\"Sweden\",longitude=18.643,latitude=60.128)\n",
    "geo.add_coordinate(name=\"Mexico\",longitude=-102.553,latitude=23.634)\n",
    "geo.add_coordinate(name=\"Sierra Leone\",longitude=-11.779,latitude=8.461)\n",
    "\n",
    "# 添加数据项\n",
    "geo.add_schema(maptype=\"world\")\n",
    "geo.add(\"\",[(\"Australia\",128326),\n",
    "      (\"Brazil\",44037),\n",
    "      (\"South Africa\",7649),\n",
    "      (\"India\",3562),\n",
    "      (\"Peru\",2779),\n",
    "      (\"Iran\",2698),\n",
    "      (\"Ukrainie\",2040),\n",
    "      (\"Canada\",1792),\n",
    "      (\"Mongolia\",1514),\n",
    "      (\"Russia\",1069),\n",
    "      (\"Mauritania\",1374),\n",
    "      (\"Kazakhsan\",701),\n",
    "      (\"UAE\",490),\n",
    "      (\"Malaysia\",554),\n",
    "      (\"New Zealand\",422),\n",
    "      (\"Indonesia\",148),\n",
    "      (\"Sweden\",113),\n",
    "      (\"Mexico\",121),\n",
    "      (\"Sierra Leone\",109),\n",
    "      ],type_=ChartType.EFFECT_SCATTER)\n",
    "\n",
    "# 绘制流向\n",
    "geo.add(\"流向图\",[\n",
    "  (\"Australia\",\"China\"),\n",
    "  (\"Brazil\",\"China\"),\n",
    "  (\"South Africa\",\"China\"),\n",
    "  (\"India\",\"China\"),\n",
    "  (\"Peru\",\"China\"),\n",
    "  (\"Iran\",\"China\"),\n",
    "  (\"Ukraine\",\"China\"),\n",
    "  (\"Canada\",\"China\"),\n",
    "  (\"Mongolia\",\"China\"),\n",
    "  (\"Russia\",\"China\"),\n",
    "  (\"Mauritania\",\"China\"),\n",
    "  (\"Kazakhstan\",\"China\"),\n",
    "  (\"UAE\",\"China\"),\n",
    "  (\"Malaysia\",\"China\"),\n",
    "  (\"New Zealand\",\"China\"),\n",
    "  (\"Indonesia\",\"China\"),\n",
    "  (\"Sweden\",\"China\"),\n",
    "  (\"Mexico\",\"China\"),\n",
    "  (\"Sierra Leone\",\"China\"),\n",
    "      ],\n",
    "    type_= GeoType.LINES,\n",
    "   effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW,symbol_size=5,color=\"yellow\"),\n",
    "    linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    )\n",
    "\n",
    "geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=130000),title_opts=opts.TitleOpts(title=\"mygeo\"))\n",
    "geo.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# python如何读写excel文件\n",
    "\n",
    "python读写excel的方式有很多，不同的模块在读写的方法上稍有区别：\n",
    "\n",
    "用xlrd和xlwt进行excel读写；\n",
    "\n",
    "用openpyxl进行excel读写；\n",
    "\n",
    "用pandas进行excel读写；\n",
    "## 用xlrd读写excel：\n",
    "### 用xlrd读excel："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "表格总行数 71\n",
      "表格总列数 8\n",
      "第1行值 ['年', '浑南', '新民', '辽中', '康平', '法库', '沈北', '苏家屯']\n",
      "第1列值 ['1951年', '1952年', '1953年', '1954年', '1955年', '1956年', '1957年', '1958年', '1959年', '1960年', '1961年', '1962年', '1963年', '1964年', '1965年', '1966年', '1967年', '1968年', '1969年', '1970年', '1971年', '1972年', '1973年', '1974年', '1975年', '1976年', '1977年', '1978年', '1979年', '1980年', '1981年', '1982年', '1983年', '1984年', '1985年', '1986年', '1987年', '1988年', '1989年', '1990年', '1991年', '1992年', '1993年', '1994年', '1995年', '1996年', '1997年', '1998年', '1999年', '2000年', '2001年', '2002年', '2003年', '2004年', '2005年', '2006年', '2007年', '2008年', '2009年', '2010年', '2011年', '2012年', '2013年', '2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '']\n",
      "第2列值 [915.3, 613.9, 1054.7, 974.0, 629.3, 904.1, 970.3, 559.3, 920.2, 813.6, 564.1, 685.7, 738.9, 895.3, 445.0, 712.5, 529.6, 583.8, 799.7, 797.8, 742.6, 586.1, 875.5, 805.3, 759.7, 653.9, 653.9, 578.2, 652.5, 618.3, 583.0, 552.0, 763.9, 718.1, 810.8, 969.5, 724.9, 629.7, 467.4, 642.4, 748.9, 554.0, 633.7, 893.1, 880.7, 721.9, 571.8, 857.6, 561.2, 501.5, 583.8, 739.2, 652.4, 705.2, 822.2, 576.3, 672.3, 718.7, 657.7, 1036.6, 477.9, 786.0, 788.0, 362.9, 573.4, 968.0, 464.4, 482.6, 873.8, '东陵']\n",
      "第3行值 ['1952年', 613.9, '', '', '', '', '', '']\n",
      "第3列值 ['新民', '', '', '', '', 617.2, 657.4, 695.1, 456.0, 762.5, 825.3, 507.2, 496.2, 500.2, 810.0, 510.3, 527.6, 380.2, 497.1, 659.6, 627.0, 632.9, 486.0, 626.9, 716.9, 720.0, 605.7, 709.9, 544.4, 817.8, 401.9, 445.7, 362.9, 543.4, 667.3, 693.3, 811.3, 604.9, 536.2, 378.4, 634.3, 854.7, 403.3, 476.7, 1012.8, 690.2, 499.3, 673.0, 817.5, 489.7, 417.7, 351.6, 357.0, 537.6, 511.6, 616.7, 319.1, 408.3, 594.5, 613.0, 1042.3, 588.4, 854.7, 653.8, 380.6, 445.2, 782.4, 566.8, 296.2, 731.5, '新民']\n",
      "第3行第3列的单元格的值： \n"
     ]
    }
   ],
   "source": [
    "import xlrd\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "book = xlrd.open_workbook(filename)\n",
    "sheet1 = book.sheets()[0]\n",
    "nrows = sheet1.nrows\n",
    "print('表格总行数',nrows)\n",
    "ncols = sheet1.ncols\n",
    "print('表格总列数',ncols)\n",
    "\n",
    "row1_values = sheet1.row_values(0)\n",
    "print('第1行值',row1_values)\n",
    "col1_values = sheet1.col_values(colx=0,start_rowx=1)\n",
    "print('第1列值',col1_values)\n",
    "\n",
    "col2_values = sheet1.col_values(colx=1,start_rowx=1)\n",
    "\n",
    "print('第2列值',col2_values)\n",
    "\n",
    "row3_values = sheet1.row_values(2)\n",
    "print('第3行值',row3_values)\n",
    "\n",
    "col3_values = sheet1.col_values(2)\n",
    "print('第3列值',col3_values)\n",
    "\n",
    "cell_3_3 = sheet1.cell(2,2).value\n",
    "print('第3行第3列的单元格的值：',cell_3_3)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### xlwt写excel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "workbook = xlwt.Workbook()\n",
    "worksheet = workbook.add_sheet('test')\n",
    "worksheet.write(0,0,'A1data')\n",
    "workbook.save('excelwrite.xls')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用openpyxl读写excel，注意这里只能是xlsx类型的excel\n",
    "### 利用openpyxl读excel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "import openpyxl\n",
    "\n",
    "workbook = openpyxl.load_workbook('data.xlsx')\n",
    "\n",
    "worksheet = workbook.get_sheet_by_name('Sheet1')\n",
    "\n",
    "row3=[item.value for item in list(worksheet.rows)[2]]\n",
    "\n",
    "print('第3行值',row3)\n",
    "\n",
    "col3=[item.value for item in list(worksheet.columns)[2]]\n",
    "\n",
    "print('第3行值',col3)\n",
    "\n",
    "cell_2_3=worksheet.cell(row=2,column=3).value\n",
    "\n",
    "print('第2行第3列值',cell_2_3)\n",
    "\n",
    "max_row=worksheet.max_row\n",
    "\n",
    "print('最大行',max_row)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用pandas读取excel\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       年      浑南     新民     辽中     康平     法库   沈北  苏家屯\n",
      "0  1951年   915.3    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "1  1952年   613.9    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "2  1953年  1054.7    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "3  1954年     974    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "4  1955年   629.3  617.2  535.8  534.3  542.9  NaN  NaN\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:312: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "df = pd.read_excel(filename)\n",
    "print(df.head())\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello world !\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    }
   ],
   "source": [
    "print(\"Hello world !\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "目录",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "246px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
